package offer2

/**
原题链接:
https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/

 * B站 帅地玩编程
 *剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
 *
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。
 *
 * 示例：
 * 输入：nums = [1,2,3,4]
 * 输出：[1,3,2,4]
 * 注：[3,1,2,4] 也是正确的答案之一。
*/

func trainingPlan(arrays []int) []int {
	if len(arrays) == 0 { //1.如果切片长度为0, 直接返回空切片
		return []int{}
	}

	var left = 0 //2.声明左右指针
	var right = len(arrays) - 1

	for left < right { //3.开始左右指针遍历
		for left < right && arrays[left]%2 == 1 { //3.1左指针直到遇到偶数停下
			left++
		}

		for left < right && arrays[right]%2 == 0 { //3.2右指针直到遇到奇数停下
			right--
		}

		if left < right { //3.3进行调换
			tmp := arrays[left]
			arrays[left] = arrays[right]
			arrays[right] = tmp
		}
	}

	return arrays //4.返回结果
}
